package com.kk.xhr.admin.biz;

import com.kk.xhr.admin.controller.request.EducationExperienceAddRequest;
import com.kk.xhr.admin.controller.request.EducationExperienceModifyRequest;
import com.kk.xhr.admin.controller.request.EmployeeAddRequest;
import com.kk.xhr.admin.controller.request.EmployeeModifyRequest;
import com.kk.xhr.admin.controller.request.EmployeeQueryRequest;
import com.kk.xhr.admin.controller.request.JobExperienceAddRequest;
import com.kk.xhr.admin.controller.request.JobExperienceModifyRequest;
import com.kk.xhr.admin.controller.request.PrizeExperienceAddRequest;
import com.kk.xhr.admin.controller.request.PrizeExperienceModifyRequest;
import com.kk.xhr.admin.controller.request.ProjectExperienceAddRequest;
import com.kk.xhr.admin.controller.request.ProjectExperienceModifyRequest;
import com.kk.xhr.admin.controller.vo.EducationExperienceVO;
import com.kk.xhr.admin.controller.vo.EmployeeVO;
import com.kk.xhr.admin.controller.vo.JobExperienceVO;
import com.kk.xhr.admin.controller.vo.PrizeExperienceVO;
import com.kk.xhr.admin.controller.vo.ProjectExperienceVO;
import com.kk.xhr.web.vo.PageVO;

import java.util.List;

/**
 * employee biz 接口
 *
 * @author luokexiong
 * @version 1.0 2021/2/15
 * @since 1.0.0
 */
public interface IEmployeeBizService {
    /**
     * 添加员工信息
     *
     * @param userId  用户id
     * @param request EmployeeAddRequest
     * @return 主键id
     */
    Long add(Long userId, EmployeeAddRequest request);

    /**
     * 添加工作经历
     *
     * @param request 添加请求
     * @return id
     */
    Long addJob(JobExperienceAddRequest request);

    /**
     * 添加项目经历
     *
     * @param request 添加请求
     * @return id
     */
    Long addProject(ProjectExperienceAddRequest request);

    /**
     * 添加获奖经历
     *
     * @param request 添加请求
     * @return id
     */
    Long addPrize(PrizeExperienceAddRequest request);

    /**
     * 添加教育经历
     *
     * @param request 添加请求
     * @return id
     */
    Long addEducation(EducationExperienceAddRequest request);

    /**
     * 分页查询
     *
     * @param request EmployeeQueryRequest
     * @return EmployeeVO
     */
    PageVO<EmployeeVO> queryPage(EmployeeQueryRequest request);

    /**
     * 根据id查询员工信息
     *
     * @param userId 用户id
     * @return 员工vo
     */
    EmployeeVO queryEmployee(Long userId);

    /**
     * 根据员工id查询工作经历
     *
     * @param employeeId 员工id
     * @return 工作经历vo 列表
     */
    List<JobExperienceVO> queryJob(Long employeeId);

    /**
     * 根据员工id查询获奖经历
     *
     * @param employeeId 员工id
     * @return 获奖经历vo 列表
     */
    List<PrizeExperienceVO> queryPrize(Long employeeId);

    /**
     * 根据员工id查询教育经历
     *
     * @param employeeId 员工id
     * @return 教育经历vo 列表
     */
    List<EducationExperienceVO> queryEducation(Long employeeId);

    /**
     * 根据员工id查询项目经历
     *
     * @param employeeId 员工id
     * @return 项目经历vo 列表
     */
    List<ProjectExperienceVO> queryProject(Long employeeId);

    /**
     * 修改employee
     *
     * @param request EmployeeModifyRequest
     * @return 是否成功
     */
    boolean modify(EmployeeModifyRequest request);

    /**
     * 修改工作经历
     *
     * @param request 修改request
     * @return 是否成功
     */
    boolean modifyJob(JobExperienceModifyRequest request);

    /**
     * 修改获奖经历
     *
     * @param request 修改request
     * @return 是否成功
     */
    boolean modifyPrize(PrizeExperienceModifyRequest request);

    /**
     * 修改教育经历
     *
     * @param request 修改request
     * @return 是否成功
     */
    boolean modifyEducation(EducationExperienceModifyRequest request);

    /**
     * 修改项目经历
     *
     * @param request 修改request
     * @return 是否成功
     */
    boolean modifyProject(ProjectExperienceModifyRequest request);

    /**
     * 删除工作经历
     *
     * @param id 主键id
     * @return 是否成功
     */
    boolean removeJob(Long id);

    /**
     * 删除获奖经历
     *
     * @param id 主键id
     * @return 是否成功
     */
    boolean removePrize(Long id);

    /**
     * 删除教育经验
     *
     * @param id 主键id
     * @return 是否成功
     */
    boolean removeEducation(Long id);

    /**
     * 删除项目经历
     *
     * @param id 主键id
     * @return 是否成功
     */
    boolean removeProject(Long id);
}
